package com.dks.repository;


import com.dks.dto.BaseIdRequestDto;
import com.dks.dto.student.UserClassHourPackageBuyDto;
import com.dks.dto.student.UserClassHourPackageGiveDto;
import com.dks.dto.student.UserClassHourPackageTransferDto;
import com.dks.exception.BaseException;
import com.dks.models.student.ClassHourPackage;
import com.dks.models.student.UserClassHourPackage;
import com.dks.result.ResultModel;
import com.github.binarywang.wxpay.exception.WxPayException;

import java.util.List;

public interface IUserClassHourPackageRepository {

    ResultModel<List<UserClassHourPackage>> list(Long userId, String status);

    ResultModel<ClassHourPackage> getSysPackageDetail(Long id);

    ResultModel<UserClassHourPackage> getUserClassHourPackageDetail(Long packageId,Long userId);

    ResultModel<Object> give(UserClassHourPackageGiveDto userClassHourPackageGiveDto) throws BaseException, WxPayException;

    ResultModel<Boolean> open(BaseIdRequestDto baseIdRequestDto);

    ResultModel<Boolean> transferApply(UserClassHourPackageTransferDto transferDto);

    ResultModel<Boolean> transferApplyCancel(BaseIdRequestDto baseIdRequestDto);

    ResultModel<Boolean> refundApply(BaseIdRequestDto baseIdRequestDto);

    ResultModel<List<ClassHourPackage>> systemList(Integer pageNum, Integer pageSize);

    ResultModel<Object> buy(UserClassHourPackageBuyDto userClassHourPackageBuyDto);
}
